<?php
namespace Admin\Model;

use Think\Model;
/**
 * BbsAdminModel
 * @author yu
 */
class BbsAdminModel extends Model {
    protected $tablePrefix = 'tm_';
    /**
     * 自动验证
     * @var type 
     */
    protected $_validate = array(
        array('id', 'checkId', 'ID非法', Model::VALUE_VALIDATE, 'callback'), //ID
        array('role_id', 'checkRoleId', '角色非法！！', Model::MUST_VALIDATE, 'callback'), //角色id
        //array('username', 'checkUsername', '用户名格式不正确，6~15个字符', Model::MUST_VALIDATE, 'callback'), //用户名非空
        //array('username', '', '用户名已存在！', Model::MUST_VALIDATE, 'unique', Model:: MODEL_INSERT), //用户名新增时唯一
        //array('username,id', 'onlyUsername', '用户名已存在！', Model::MUST_VALIDATE, 'callback', Model:: MODEL_UPDATE), //用户名编辑时唯一
        //array('email', 'email', '邮箱格式不正确！', Model::MUST_VALIDATE), //邮箱格式
        //array('email', '', '邮箱已存在！', Model::MUST_VALIDATE, 'unique', Model:: MODEL_INSERT), //邮箱新增时唯一
        //array('email,id', 'onlyEmail', '邮箱已存在！', Model::MUST_VALIDATE, 'callback', Model:: MODEL_UPDATE), //邮箱编辑时唯一
        array('user_name','','用户名已存在！', Model::MUST_VALIDATE, 'unique', Model:: MODEL_INSERT),
        //array('store_id','','商店非法！', Model::MUST_VALIDATE, 'unique', Model:: MODEL_INSERT),
        //array('areas_id','','地区非法！', Model::MUST_VALIDATE, 'unique', Model:: MODEL_INSERT),
        array('status', array(0, 1), '值范围不正确！', Model::MUST_VALIDATE, 'in'), //状态
    );

    /**
     * 自动完成
     * @var type 
     */
    protected $_auto = array(
        array('create_time', 'time', Model:: MODEL_INSERT, 'function'), //自动添加当前时间戳
        array('update_time', 'time', Model:: MODEL_INSERT, 'function'), //自动添加当前时间戳
        array('user_salt', 'getSalt', Model:: MODEL_INSERT, 'callback'), //自动填充密码盐
        array('user_password', 'getMD5Pwd', Model:: MODEL_INSERT, 'callback'), //自动加密密码
    );

    
    /**
     * 验证管理员id，非超管id
     * @param type $data
     * @return boolean
     */
    protected function checkId($id) {
        if (C('SUPER_ADMIN_ID') == $id) {
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * 检查角色id
     * @param type $roleId
     * @return boolean
     */
    protected function checkRoleId($roleId) {
        $where['id'] = array(array('neq', C('SUPER_ADMIN_ROLE_ID')), array('eq', $roleId));
        $where['status'] = array('eq', 1);
        $result = M('Role')->where($where)->count();
        if ($result > 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * 验证用户名
     * @param type $username
     * @return boolean
     */
    protected function checkUsername($username) {
        if (preg_match('/^[A-Za-z0-9]{6,15}$/', $username)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * 用户名唯一
     * @param type $data
     * @return boolean
     */
    protected function onlyUsername($data) {
        $map = '';
        $map['id'] = array('neq', $data['id']);
        $map['username'] = array('eq', $data['username']);
        if ($this->where($map)->count() > 0) {
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * email唯一
     * @param type $data
     * @return boolean
     */
    protected function onlyEmail($data) {
        $map = '';
        $map['id'] = array('neq', $data['id']);
        $map['email'] = array('eq', $data['email']);
        if ($this->where($map)->count() > 0) {
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * 生成随机密码盐
     * @return type
     */
    protected function getSalt() {
        $_POST['ty_salt'] = '_' . rand(1000, 9999);
        return $_POST['ty_salt'];
    }

    /**
     * 生成MD5密码
     * @return type
     */
    protected function getMD5Pwd() {
        return md5($_POST['password'] . $_POST['ty_salt']);
    }

}

?>
